<?php
//Ultima verificacion: 14-10-2014 ; 21-11-2014 ; 05-03-2015
class M_clase extends CI_Model {
	function _construct(){
		//Call the Model constructor
		parent::_construct();
	}
	
	//Este metodo se utiliza cuando queremos obtener las clases activas e inactivas menos las borradas (-1)
	function buscar($restriccion=null){
		$consulta = $this->db->query("SELECT clase.*, ciclolectivo.idCicloLectivo,
											 DATE_FORMAT(clase.fechaPublicacion,'%d/%m/%Y') AS fechaPublicacionFormateada, 
											 DATE_FORMAT(clase.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, 
											 DATE_FORMAT(clase.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada
									  FROM clase, asignatura, division, curso, ciclolectivo, turno
									  WHERE clase.idAsignatura=asignatura.idAsignatura AND
											asignatura.idDivision=division.idDivision AND 
											division.idCurso=curso.idCurso AND
											curso.idCicloLectivo=ciclolectivo.idCicloLectivo AND 
											curso.idTurno=turno.idTurno AND 
											clase.estado<>-1 AND 
											asignatura.estado=1 AND 
											division.estado=1 AND 
											curso.estado=1 AND											
											ciclolectivo.estado<>-1 AND 
											turno.estado=1 $restriccion
									  ORDER BY clase.fechaPublicacion DESC, clase.nombre ASC");
		return($consulta);
	}
			
	//Este metodo se utiliza cuando queremos obtener las clases activas
	function buscarActivos($restriccion=null, $orderBy=null){		
		$consulta = $this->db->query("SELECT clase.*, ciclolectivo.idCicloLectivo,
											 DATE_FORMAT(clase.fechaPublicacion,'%d/%m/%Y') AS fechaPublicacionFormateada, 
											 DATE_FORMAT(clase.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, 
											 DATE_FORMAT(clase.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada
									  FROM clase, asignatura, division, curso, ciclolectivo, turno
									  WHERE clase.idAsignatura=asignatura.idAsignatura AND
											asignatura.idDivision=division.idDivision AND 
											division.idCurso=curso.idCurso AND
											curso.idCicloLectivo=ciclolectivo.idCicloLectivo AND 
											curso.idTurno=turno.idTurno AND 
											clase.estado=1 AND 
											asignatura.estado=1 AND 
											division.estado=1 AND 
											curso.estado=1 AND											
											ciclolectivo.estado<>-1 AND 
											turno.estado=1 $restriccion
									  ORDER BY clase.fechaPublicacion DESC, clase.nombre ASC");
		return($consulta);
	}
	
	//Este metodo se utiliza para eliminar una clase
	function eliminar($idClase=null, $idDestructor=null){
		$consulta = $this->db->query("UPDATE `clase` 
									 SET `estado` = -1,
										 `idDestructor` = ". $this->db->escape($idDestructor) ."
							         WHERE `clase`.`idClase` = " . $this->db->escape($idClase) . " LIMIT 1");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza para crear una clase
	function crear($idAsignatura=null, $fechaPublicacion=null, $nombre=null, $descripcion=null, $estado=null, $idCreador=null){
		$this->db->query("INSERT INTO `clase` (`idClase`,`idAsignatura`,`fechaPublicacion`,`nombre`,`descripcion`,`fechaCreacion`,`estado`,`idCreador`) VALUES 
										      (NULL,".$this->db->escape($idAsignatura).",".$this->db->escape($fechaPublicacion).",".$this->db->escape($nombre).",".$this->db->escape($descripcion).",now(),".$this->db->escape($estado).",".$this->db->escape($idCreador).")");
		return($this->db->affected_rows());
	}
		
	//Este metodo se utiliza cuando queremos devolver una clase en particular usado generalmente en el formulario de modificar
	function get($idClase=null, $restriccion=null){
		$consulta = $this->db->query("SELECT clase.*, ciclolectivo.idCicloLectivo, asignatura.nombre AS nombreAsignatura, asignatura.idAsignatura,
											DATE_FORMAT(clase.fechaPublicacion,'%d/%m/%Y') AS fechaPublicacionFormateada,
											DATE_FORMAT(clase.fechaPublicacion,'%d-%m-%Y') AS fechaPublicacionFormateada2
									  FROM clase, asignatura, division, curso, ciclolectivo, turno
									  WHERE clase.idAsignatura=asignatura.idAsignatura AND
											asignatura.idDivision=division.idDivision AND 
											division.idCurso=curso.idCurso AND
											curso.idCicloLectivo=ciclolectivo.idCicloLectivo AND 
											curso.idTurno=turno.idTurno AND 
											clase.estado<>-1 AND 
											asignatura.estado<>-1 AND 
											division.estado<>-1 AND 
											curso.estado<>-1 AND											
											ciclolectivo.estado<>-1 AND 
											turno.estado<>-1 AND 
											clase.idClase=".$this->db->escape($idClase)." $restriccion
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos devolver la clase contigua a una en particular usada generalmente en el formulario de modificar
	function getContiguo($idClase=null, $cant=null, $idAsignatura=null){
		do{
			$idClase+=$cant;
			$consulta = $this->db->query("SELECT *
										  FROM clase
										  WHERE idClase=".$this->db->escape($idClase)."
										  LIMIT 1");
			if($consulta->num_rows == 0)
				return(0);
			
		}while($consulta->row()->estado=='-1' || $consulta->row()->idAsignatura != $idAsignatura);
				
		return($consulta->row()->idClase);
	}
			
	//Este metodo se utiliza para modificar una clase
	function modificar($idClase=null, $idAsignatura=null, $fechaPublicacion=null, $nombre=null, $descripcion=null, $estado=null){
		$consulta = $this->db->query("UPDATE `clase` 
									 SET `idAsignatura` = ". $this->db->escape($idAsignatura) .",
										 `fechaPublicacion` = ". $this->db->escape($fechaPublicacion) .",
										 `nombre` = ". $this->db->escape($nombre) .",
									     `descripcion` = ". $this->db->escape($descripcion) .",
										 `estado` = ". $this->db->escape($estado) ."
							         WHERE `clase`.`idClase` = " . $this->db->escape($idClase) . " LIMIT 1");
		return($this->db->affected_rows());
	}
}
?>